const Koa = require('koa'); // 不能用esmodule，必须用commonjs
const fs = require('fs'); // 内置模块
const path = require('path');

const viteConfig = require('./vite.config');
const aliasResolver = require('./aliasResolver');

const app = new Koa();
app.use(async(ctx) => { // context 上下文 request：请求信息 response：响应信息 get请求 /根路径
  console.log('ctx', ctx.request, ctx.response);
  // 用中间件帮我们读就行了
  if (ctx.request.url === '/') {
    const indexContent = await fs.promises.readFile(path.resolve(__dirname, './index.html')); // 在服务端一般不这么勇
    ctx.response.body = indexContent; 
    ctx.response.set('Content-Type', 'text/html');
  }
  // 如果当前文件的url是以js后缀结尾的
  if (ctx.request.url.endsWith('.js')) {
    const JSContent = await fs.promises.readFile(path.resolve(__dirname, '.' + ctx.request.url)); // 在服务端一般不这么用
    console.log('JSContent', JSContent);
    // 进行alias的替换
    const lastResult = aliasResolver(viteConfig.resolve.alias, JSContent.toString());
    ctx.response.body = lastResult;
    ctx.response.set('Content-Type', 'text/javascript');
  }
});

app.listen(5173, () => {
  console.log('vite dev server listen on 5173');
});
